<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数据脱敏技术全解析：保护敏感信息的艺术</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', 'Noto Serif SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            line-height: 1.8;
            color: #333;
            background-color: #f8fafc;
        }
        .hero {
            background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%);
        }
        .hero-title {
            text-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }
        .card {
            transition: all 0.3s ease;
            border-radius: 12px;
            overflow: hidden;
        }
        .card:hover {
            transform: translateY(-5px);
            box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1), 0 10px 10px -5px rgba(0,0,0,0.04);
        }
        .code-block {
            background-color: #1e293b;
            border-radius: 8px;
        }
        .code-block-header {
            background-color: #0f172a;
        }
        .drop-cap:first-letter {
            float: left;
            font-size: 4.5rem;
            line-height: 0.85;
            margin: 0.15em 0.1em 0 0;
            color: #1e3a8a;
            font-weight: 700;
        }
        .section-divider {
            height: 1px;
            background: linear-gradient(90deg, rgba(59,130,246,0.1) 0%, rgba(59,130,246,1) 50%, rgba(59,130,246,0.1) 100%);
        }
    </style>
</head>
<body class="antialiased">
    <!-- Hero Section -->
    <div class="hero text-white py-20 px-4 sm:px-6 lg:px-8">
        <div class="max-w-4xl mx-auto text-center">
            <div class="mb-4">
                <span class="inline-block bg-white bg-opacity-20 px-3 py-1 rounded-full text-sm font-medium">数据安全专题</span>
            </div>
            <h1 class="hero-title text-4xl md:text-5xl lg:text-6xl font-bold leading-tight mb-6">
                数据脱敏技术：<br>给敏感信息穿上"隐形衣"
            </h1>
            <p class="text-xl md:text-2xl text-blue-100 max-w-3xl mx-auto mb-8">
                六种强大的数据保护方案解析，从基础屏蔽到高级加密，全面守护你的数据安全
            </p>
            <div class="flex justify-center space-x-4">
                <a href="#intro" class="bg-white text-blue-600 px-6 py-3 rounded-lg font-medium hover:bg-blue-50 transition duration-300">
                    <i class="fas fa-book-open mr-2"></i>开始阅读
                </a>
                <a href="#techniques" class="bg-blue-700 bg-opacity-50 text-white px-6 py-3 rounded-lg font-medium hover:bg-opacity-70 transition duration-300">
                    <i class="fas fa-shield-alt mr-2"></i>技术方案
                </a>
            </div>
        </div>
    </div>

    <!-- Main Content -->
    <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
        <!-- Introduction -->
        <section id="intro" class="mb-20">
            <div class="drop-cap text-lg md:text-xl text-gray-700 leading-relaxed mb-8">
                随着数据泄露事件频频登上头条，企业和开发者都在寻找有效的数据保护方案。想象一下，你辛苦构建的系统突然因为一个用户数据泄露而陷入危机，所有的努力毁于一旦。数据脱敏技术如同给数据穿上了"隐形衣"，即使被窃取也无法识别真实信息。
            </div>
            
            <div class="bg-white rounded-xl shadow-lg overflow-hidden mb-10">
                <img src="https://cdn.nlark.com/yuque/0/2025/png/21449790/1747805145638-7f42c02b-f92c-4470-9976-643dca9dedfc.png" alt="数据脱敏概念图" class="w-full h-auto">
                <div class="p-6">
                    <p class="text-gray-600">
                        本文将为你揭秘六种强大的数据脱敏方案，从最基础的屏蔽法到先进的加密技术，每种方案都有其独特的应用场景。我亲身经历过某金融项目因脱敏方案选择不当导致的灾难，也见证过完美脱敏如何在数据分析中创造奇迹。无论你是刚开始接触数据安全，还是寻求优化现有系统，这些方案都值得你一一尝试。
                    </p>
                </div>
            </div>

            <!-- Quick Navigation -->
            <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-16">
                <a href="#basic" class="card bg-white p-6 shadow-md hover:shadow-lg border-l-4 border-blue-500">
                    <div class="flex items-center mb-4">
                        <div class="bg-blue-100 p-3 rounded-full mr-4">
                            <i class="fas fa-eye-slash text-blue-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold text-gray-800">基础脱敏技术</h3>
                    </div>
                    <p class="text-gray-600">屏蔽法与替换法的原理与实践</p>
                </a>
                <a href="#advanced" class="card bg-white p-6 shadow-md hover:shadow-lg border-l-4 border-purple-500">
                    <div class="flex items-center mb-4">
                        <div class="bg-purple-100 p-3 rounded-full mr-4">
                            <i class="fas fa-lock text-purple-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold text-gray-800">高级脱敏策略</h3>
                    </div>
                    <p class="text-gray-600">可逆加密与洗牌技术的应用</p>
                </a>
                <a href="#dynamic" class="card bg-white p-6 shadow-md hover:shadow-lg border-l-4 border-green-500">
                    <div class="flex items-center mb-4">
                        <div class="bg-green-100 p-3 rounded-full mr-4">
                            <i class="fas fa-sync-alt text-green-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold text-gray-800">动态脱敏</h3>
                    </div>
                    <p class="text-gray-600">根据场景智能调整的脱敏方案</p>
                </a>
            </div>
        </section>

        <!-- Section Divider -->
        <div class="section-divider my-12"></div>

        <!-- Basic Concepts -->
        <section id="concepts" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="bg-blue-100 p-3 rounded-full mr-4">
                    <i class="fas fa-info-circle text-blue-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold text-gray-800">一、数据脱敏的基本概念</h2>
            </div>

            <div class="bg-white rounded-xl shadow-md overflow-hidden mb-10">
                <div class="p-6 md:p-8">
                    <h3 class="text-2xl font-semibold text-gray-800 mb-4">1. 什么是数据脱敏及其核心目标</h3>
                    <p class="text-gray-700 mb-6">
                        数据脱敏，犹如给敏感信息穿上一件"隐形衣"，是指通过特定技术手段将敏感数据转换为不敏感的形式，同时保持数据的可用性和完整性。想象一下，我们需要在保护用户隐私与数据可用性之间找到平衡点，就像厨师需要在菜品的口感和健康之间寻求完美平衡一样。
                    </p>
                    
                    <div class="bg-blue-50 rounded-lg p-6 mb-6">
                        <h4 class="text-lg font-semibold text-blue-800 mb-3">数据脱敏的核心目标：</h4>
                        <ul class="list-disc pl-6 text-gray-700 space-y-2">
                            <li>保护个人隐私信息不被非授权访问</li>
                            <li>满足法律法规的合规要求</li>
                            <li>降低数据泄露的风险和影响</li>
                            <li>在保证数据价值的同时实现安全防护</li>
                        </ul>
                    </div>

                    <div class="mermaid mb-6">
                        graph TD
                            A[数据脱敏目标] --> B[隐私保护]
                            A --> C[法规合规]
                            A --> D[风险控制]
                            A --> E[数据可用性]
                    </div>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">2. 数据脱敏在现代信息系统中的关键地位</h3>
                    <p class="text-gray-700 mb-6">
                        在当今数据驱动的世界中，数据脱敏已成为企业数据安全体系的重要组成部分。它就像城堡的最后一道防线，即使前面的防护被突破，脱敏后的数据仍然能保持核心价值不被窃取。
                    </p>
                    <p class="text-gray-700 mb-6">
                        我曾参与过一个银行业务系统，该系统每天处理数百万笔交易。如果没有实施严格的数据脱敏策略，一旦数据泄露，不仅会导致用户财产损失，更会造成银行声誉受损，甚至面临巨额罚款。
                    </p>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">3. 不同行业对数据脱敏的特殊需求</h3>
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-blue-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-university text-blue-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">金融行业</h4>
                            </div>
                            <p class="text-gray-600 text-sm">需要对账号、身份证、交易金额等进行高强度脱敏，同时保证业务处理的连续性</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-green-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-hospital text-green-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">医疗行业</h4>
                            </div>
                            <p class="text-gray-600 text-sm">在保护患者隐私的同时，需要保留数据间的关联性以支持医学研究</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-yellow-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-shopping-cart text-yellow-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">电商行业</h4>
                            </div>
                            <p class="text-gray-600 text-sm">需要在用户画像分析与个人隐私保护之间取得平衡</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-purple-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-landmark text-purple-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">政府部门</h4>
                            </div>
                            <p class="text-gray-600 text-sm">需要满足更为严格的合规要求，同时实现跨部门数据共享</p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Section Divider -->
        <div class="section-divider my-12"></div>

        <!-- Basic Techniques -->
        <section id="basic" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="bg-green-100 p-3 rounded-full mr-4">
                    <i class="fas fa-shield-alt text-green-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold text-gray-800">二、基础脱敏技术</h2>
            </div>

            <div class="bg-white rounded-xl shadow-md overflow-hidden mb-10">
                <div class="p-6 md:p-8">
                    <h3 class="text-2xl font-semibold text-gray-800 mb-4">1. 屏蔽法(原理、实现方式与适用场景)</h3>
                    <p class="text-gray-700 mb-6">
                        屏蔽法是最基础也是最常用的脱敏技术，它通过将敏感信息的部分或全部字符替换为特定符号（如星号*）来实现保护。这就像是给文档中的关键词打上马赛克，只展示必要的信息。
                    </p>

                    <div class="code-block rounded-lg overflow-hidden mb-6">
                        <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                            <div class="flex space-x-2 mr-4">
                                <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                <span class="w-3 h-3 rounded-full bg-green-500"></span>
                            </div>
                            <span class="text-gray-300 text-sm">Java实现示例</span>
                        </div>
                        <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>public class MaskingUtil {
    /**
     * 对身份证号进行脱敏处理
     * @param idCard 身份证号
     * @return 脱敏后的身份证号
     */
    public static String maskIdCard(String idCard) {
        if (idCard == null || idCard.length() < 8) {
            return idCard;
        }
        // 保留前4位和后4位，中间用星号代替
        return idCard.substring(0, 4) 
               + "********" 
               + idCard.substring(idCard.length() - 4);
    }
    
    /**
     * 对手机号进行脱敏处理
     * @param phoneNumber 手机号
     * @return 脱敏后的手机号
     */
    public static String maskPhoneNumber(String phoneNumber) {
        if (phoneNumber == null || phoneNumber.length() != 11) {
            return phoneNumber;
        }
        // 只显示前3位和后4位
        return phoneNumber.substring(0, 3) + "****" + phoneNumber.substring(7);
    }
}</code></pre>
                    </div>

                    <div class="bg-blue-50 rounded-lg p-6 mb-6">
                        <h4 class="text-lg font-semibold text-blue-800 mb-3">适用场景：</h4>
                        <ul class="list-disc pl-6 text-gray-700 space-y-2">
                            <li>用户界面展示（如订单页面仅显示部分信息）</li>
                            <li>日志记录（避免敏感信息出现在日志中）</li>
                            <li>简单的报表和数据导出</li>
                        </ul>
                    </div>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">2. 替换法(如何保持数据结构的前提下完成信息隐藏)</h3>
                    <p class="text-gray-700 mb-6">
                        替换法是将敏感数据替换为虚构但格式相似的数据，保持数据的结构特征和分布特性，但不再包含真实信息。这就像是用一把形状相似但材质不同的钥匙替代真钥匙，外表看起来几乎一样。
                    </p>

                    <div class="code-block rounded-lg overflow-hidden mb-6">
                        <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                            <div class="flex space-x-2 mr-4">
                                <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                <span class="w-3 h-3 rounded-full bg-green-500"></span>
                            </div>
                            <span class="text-gray-300 text-sm">Java实现示例</span>
                        </div>
                        <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>public class ReplacementUtil {
    private static final Random RANDOM = new Random();
    
    /**
     * 替换姓名
     * @param name 原始姓名
     * @return 替换后的姓名
     */
    public static String replaceName(String name) {
        if (name == null || name.isEmpty()) {
            return name;
        }
        
        // 中文姓氏库
        String[] surnames = {"张", "王", "李", "赵", "刘", "陈", "杨", "黄", "周", "吴"};
        // 随机选择一个姓氏
        String newSurname = surnames[RANDOM.nextInt(surnames.length)];
        
        // 生成与原名长度相似的随机名字
        StringBuilder newName = new StringBuilder(newSurname);
        int nameLength = name.length() - 1; // 减去姓氏
        
        for (int i = 0; i < nameLength; i++) {
            // 生成一个随机的汉字（简化处理）
            char c = (char) (0x4e00 + RANDOM.nextInt(0x9fa5 - 0x4e00));
            newName.append(c);
        }
        
        return newName.toString();
    }
    
    /**
     * 替换邮箱地址，保持邮箱域名
     * @param email 原始邮箱
     * @return 替换后的邮箱
     */
    public static String replaceEmail(String email) {
        if (email == null || !email.contains("@")) {
            return email;
        }
        
        String[] parts = email.split("@", 2);
        String username = parts[0];
        String domain = parts[1];
        
        // 生成随机字符串替换用户名部分
        StringBuilder newUsername = new StringBuilder();
        int length = username.length();
        String chars = "abcdefghijklmnopqrstuvwxyz0123456789";
        
        for (int i = 0; i < length; i++) {
            int index = RANDOM.nextInt(chars.length());
            newUsername.append(chars.charAt(index));
        }
        
        return newUsername + "@" + domain;
    }
}</code></pre>
                    </div>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">3. 两种方法在实际项目中的使用</h3>
                    <div class="bg-yellow-50 border-l-4 border-yellow-500 p-6 mb-6">
                        <div class="flex">
                            <div class="flex-shrink-0">
                                <i class="fas fa-lightbulb text-yellow-500 text-xl"></i>
                            </div>
                            <div class="ml-3">
                                <p class="text-yellow-700">
                                    在一个银行客户关系管理系统中，我们同时应用了这两种技术：<br>
                                    - 对<b>内部员工</b>使用<b>屏蔽法</b>：员工查看客户资料时，系统自动屏蔽身份证号的中间位，只显示首尾，确保操作时能验证身份但不会完全暴露信息。<br>
                                    - 对<b>测试环境</b>使用<b>替换法</b>：将生产数据迁移到测试环境前，系统自动替换所有客户姓名、电话和地址，保证数据格式不变但内容完全虚构。
                                </p>
                            </div>
                        </div>
                    </div>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">4. 基础脱敏技术的局限性</h3>
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                        <div class="bg-red-50 border border-red-200 rounded-lg p-6">
                            <div class="flex items-center mb-3">
                                <i class="fas fa-exclamation-triangle text-red-500 mr-3"></i>
                                <h4 class="font-semibold text-red-800">不可逆性</h4>
                            </div>
                            <p class="text-red-700 text-sm">一旦数据被屏蔽或替换，原始信息无法恢复</p>
                        </div>
                        <div class="bg-red-50 border border-red-200 rounded-lg p-6">
                            <div class="flex items-center mb-3">
                                <i class="fas fa-link-slash text-red-500 mr-3"></i>
                                <h4 class="font-semibold text-red-800">关联性丧失</h4>
                            </div>
                            <p class="text-red-700 text-sm">多个相关数据集之间的关联性可能被破坏</p>
                        </div>
                        <div class="bg-red-50 border border-red-200 rounded-lg p-6">
                            <div class="flex items-center mb-3">
                                <i class="fas fa-shield-alt text-red-500 mr-3"></i>
                                <h4 class="font-semibold text-red-800">安全级别有限</h4>
                            </div>
                            <p class="text-red-700 text-sm">对于高级攻击者，这些方法可能不足以防护</p>
                        </div>
                        <div class="bg-red-50 border border-red-200 rounded-lg p-6">
                            <div class="flex items-center mb-3">
                                <i class="fas fa-chart-line-down text-red-500 mr-3"></i>
                                <h4 class="font-semibold text-red-800">数据价值降低</h4>
                            </div>
                            <p class="text-red-700 text-sm">过度脱敏可能导致数据分析价值大幅下降</p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Section Divider -->
        <div class="section-divider my-12"></div>

        <!-- Advanced Techniques -->
        <section id="advanced" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="bg-purple-100 p-3 rounded-full mr-4">
                    <i class="fas fa-lock-open text-purple-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold text-gray-800">三、高级脱敏策略</h2>
            </div>

            <div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-12">
                <div class="bg-white rounded-xl shadow-md overflow-hidden">
                    <div class="p-6 md:p-8">
                        <h3 class="text-2xl font-semibold text-gray-800 mb-4">1. 可逆加密技术在数据脱敏中的应用</h3>
                        <p class="text-gray-700 mb-6">
                            可逆加密技术是一种更为高级的脱敏策略，它通过密钥将数据转换为密文，并且在必要时可以通过解密还原为原始数据。这就像是给数据上了一把高级锁，只有拥有钥匙的人才能打开。
                        </p>

                        <div class="mermaid mb-6">
                            sequenceDiagram
                                participant User
                                participant System
                                participant Database
                                User->>System: 请求敏感数据
                                System->>Database: 查询加密数据
                                Database-->>System: 返回加密数据
                                System->>System: 使用密钥解密数据
                                System-->>User: 返回明文数据
                        </div>

                        <div class="code-block rounded-lg overflow-hidden mb-6">
                            <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                                <div class="flex space-x-2 mr-4">
                                    <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                    <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                    <span class="w-3 h-3 rounded-full bg-green-500"></span>
                                </div>
                                <span class="text-gray-300 text-sm">Java实现示例</span>
                            </div>
                            <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class ReversibleEncryptionUtil {
    
    private static final String ALGORITHM = "AES";
    private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";
    private static final String SECRET_KEY = "ThisIsA16ByteKey"; // 在实际应用中应妥善保管
    
    /**
     * 加密数据
     * @param data 原始数据
     * @return 加密后的数据
     */
    public static String encrypt(String data) {
        try {
            SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
            Cipher cipher = Cipher.getInstance(TRANSFORMATION);
            cipher.init(Cipher.ENCRYPT_MODE, keySpec);
            byte[] encryptedBytes = cipher.doFinal(data.getBytes());
            return Base64.getEncoder().encodeToString(encryptedBytes);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    /**
     * 解密数据
     * @param encryptedData 加密数据
     * @return 解密后的原始数据
     */
    public static String decrypt(String encryptedData) {
        try {
            SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), ALGORITHM);
            Cipher cipher = Cipher.getInstance(TRANSFORMATION);
            cipher.init(Cipher.DECRYPT_MODE, keySpec);
            byte[] encryptedBytes = Base64.getDecoder().decode(encryptedData);
            byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
            return new String(decryptedBytes);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}</code></pre>
                        </div>

                        <div class="bg-green-50 border-l-4 border-green-500 p-6">
                            <div class="flex">
                                <div class="flex-shrink-0">
                                    <i class="fas fa-clipboard-check text-green-500 text-xl"></i>
                                </div>
                                <div class="ml-3">
                                    <p class="text-green-700">
                                        在一家保险公司的项目中，我们使用可逆加密对客户医疗记录进行脱敏。在数据库中存储的是加密后的信息，只有在授权医生访问时，系统才会进行解密并显示完整信息，有效平衡了隐私保护与医疗服务需求。
                                    </p>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="bg-white rounded-xl shadow-md overflow-hidden">
                    <div class="p-6 md:p-8">
                        <h3 class="text-2xl font-semibold text-gray-800 mb-4">2. 洗牌技术如何保护数据关联性</h3>
                        <p class="text-gray-700 mb-6">
                            洗牌技术（Data Shuffling）是指在同一数据集内部或不同数据集之间，按照特定规则重新排列数据，打破数据的原始关联但保持整体数据分布特征。这类似于给一副扑克牌洗牌，牌的数量和种类不变，但顺序被完全打乱。
                        </p>

                        <div class="mermaid mb-6">
                            flowchart LR
                                A[原始数据] -->|洗牌前| B[张三-地址A]
                                C[李四-地址B] -->|洗牌前| D[王五-地址C]
                                A -->|洗牌后| D
                                C -->|洗牌后| B
                        </div>

                        <div class="code-block rounded-lg overflow-hidden mb-6">
                            <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                                <div class="flex space-x-2 mr-4">
                                    <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                    <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                    <span class="w-3 h-3 rounded-full bg-green-500"></span>
                                </div>
                                <span class="text-gray-300 text-sm">Java实现示例</span>
                            </div>
                            <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>public class ShufflingUtil {
    
    /**
     * 对用户列表中的地址信息进行洗牌
     * @param users 用户列表
     */
    public static void shuffleAddresses(List&lt;User&gt; users) {
        if (users == null || users.size() &lt; 2) {
            return;
        }
        
        // 提取所有地址到列表中
        List&lt;String&gt; addresses = users.stream()
                .map(User::getAddress)
                .collect(Collectors.toList());
        
        // 随机打乱地址列表
        Collections.shuffle(addresses);
        
        // 将打乱后的地址重新分配给用户
        for (int i = 0; i &lt; users.size(); i++) {
            users.get(i).setAddress(addresses.get(i));
        }
    }
    
    /**
     * 在同一邮编区域内打乱电话号码
     * @param customers 客户列表
     */
    public static void shufflePhoneNumbersByZipCode(List&lt;Customer&gt; customers) {
        // 按邮编分组
        Map&lt;String, List&lt;Customer&gt;&gt; customersByZipCode = customers.stream()
                .collect(Collectors.groupingBy(Customer::getZipCode));
        
        // 对每个邮编内的客户进行电话号码洗牌
        for (List&lt;Customer&gt; customerGroup : customersByZipCode.values()) {
            if (customerGroup.size() &lt; 2) continue;
            
            List&lt;String&gt; phones = customerGroup.stream()
                    .map(Customer::getPhoneNumber)
                    .collect(Collectors.toList());
            
            Collections.shuffle(phones);
            
            for (int i = 0; i &lt; customerGroup.size(); i++) {
                customerGroup.get(i).setPhoneNumber(phones.get(i));
            }
        }
    }
}</code></pre>
                        </div>

                        <div class="bg-blue-50 border-l-4 border-blue-500 p-6">
                            <div class="flex">
                                <div class="flex-shrink-0">
                                    <i class="fas fa-hospital-user text-blue-500 text-xl"></i>
                                </div>
                                <div class="ml-3">
                                    <p class="text-blue-700">
                                        在一个大型医疗数据研究项目中，我们使用洗牌技术保护患者隐私。我们将患者的个人信息与其医疗记录分离，然后在相同疾病类别内部随机交换患者的年龄和性别信息。这样研究人员仍然能分析疾病与人口统计学特征的关系，但无法识别具体患者。
                                    </p>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Section Divider -->
        <div class="section-divider my-12"></div>

        <!-- Dynamic Masking -->
        <section id="dynamic" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="bg-indigo-100 p-3 rounded-full mr-4">
                    <i class="fas fa-random text-indigo-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold text-gray-800">四、动态脱敏与差分隐私</h2>
            </div>

            <div class="bg-white rounded-xl shadow-md overflow-hidden mb-10">
                <div class="p-6 md:p-8">
                    <h3 class="text-2xl font-semibold text-gray-800 mb-4">1. 动态脱敏的工作原理</h3>
                    <p class="text-gray-700 mb-6">
                        动态脱敏是一种根据访问者权限级别、使用场景或数据敏感度自动调整脱敏程度的技术。与静态脱敏不同，动态脱敏能够"智能判断"何时、何处、如何进行脱敏处理。
                    </p>

                    <div class="mermaid mb-8">
                        flowchart TD
                            A[数据请求] --> B{用户角色?}
                            B -->|管理员| C[显示完整数据]
                            B -->|普通员工| D[部分脱敏]
                            B -->|外部用户| E[完全脱敏]
                    </div>

                    <div class="code-block rounded-lg overflow-hidden mb-8">
                        <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                            <div class="flex space-x-2 mr-4">
                                <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                <span class="w-3 h-3 rounded-full bg-green-500"></span>
                            </div>
                            <span class="text-gray-300 text-sm">Java实现示例</span>
                        </div>
                        <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>public class DynamicMaskingService {
    
    public enum UserRole {
        ADMIN, MANAGER, STAFF, CUSTOMER
    }
    
    /**
     * 根据用户角色动态脱敏客户信息
     * @param customer 客户信息
     * @param role 查询用户角色
     * @return 脱敏后的客户信息
     */
    public Customer maskCustomerInfo(Customer customer, UserRole role) {
        Customer maskedCustomer = new Customer(customer);
        
        switch (role) {
            case ADMIN:
                // 管理员可以查看全部信息，无需脱敏
                break;
                
            case MANAGER:
                // 经理可以查看大部分信息，轻度脱敏
                maskedCustomer.setIdCard(maskPartially(customer.getIdCard(), 6, 4));
                maskedCustomer.setBankAccount(maskPartially(customer.getBankAccount(), 4, 4));
                break;
                
            case STAFF:
                // 普通员工只能查看部分信息，中度脱敏
                maskedCustomer.setIdCard(maskPartially(customer.getIdCard(), 3, 2));
                maskedCustomer.setPhoneNumber(maskPartially(customer.getPhoneNumber(), 3, 2));
                maskedCustomer.setBankAccount("************");
                maskedCustomer.setIncome("保密");
                break;
                
            case CUSTOMER:
                // 客户自己查看，只显示必要信息，高度脱敏
                maskedCustomer.setIdCard(maskPartially(customer.getIdCard(), 0, 0));
                maskedCustomer.setPhoneNumber(maskPartially(customer.getPhoneNumber(), 0, 0));
                maskedCustomer.setBankAccount(null);
                maskedCustomer.setIncome(null);
                maskedCustomer.setRiskLevel(null);
                break;
        }
        
        return maskedCustomer;
    }
    
    private String maskPartially(String text, int prefixLength, int suffixLength) {
        if (text == null || text.length() <= prefixLength + suffixLength) {
            return "****";
        }
        
        StringBuilder result = new StringBuilder();
        if (prefixLength > 0) {
            result.append(text.substring(0, prefixLength));
        }
        
        int maskLength = text.length() - prefixLength - suffixLength;
        for (int i = 0; i < maskLength; i++) {
            result.append("*");
        }
        
        if (suffixLength > 0) {
            result.append(text.substring(text.length() - suffixLength));
        }
        
        return result.toString();
    }
}</code></pre>
                    </div>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">2. 差分隐私如何平衡数据可用性与隐私保护</h3>
                    <p class="text-gray-700 mb-6">
                        差分隐私是一种数学上严格的隐私保护模型，通过向数据中添加精心设计的随机噪声，确保从数据分析结果中无法识别单个个体的信息，同时保持整体统计特性。
                    </p>

                    <div class="mermaid mb-6">
                        graph LR
                            A[原始数据] --> B[添加噪声]
                            B --> C[发布数据]
                            D[攻击者] -->|分析| C
                            D -->|无法识别个体| E[隐私保护]
                            F[研究人员] -->|分析| C
                            F -->|获得统计结果| G[数据可用性]
                    </div>

                    <div class="code-block rounded-lg overflow-hidden mb-6">
                        <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                            <div class="flex space-x-2 mr-4">
                                <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                <span class="w-3 h-3 rounded-full bg-green-500"></span>
                            </div>
                            <span class="text-gray-300 text-sm">Java实现示例</span>
                        </div>
                        <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>public class DifferentialPrivacyUtil {
    
    private static final Random RANDOM = new Random();
    
    /**
     * 使用拉普拉斯机制为统计值添加差分隐私保护
     * @param actualValue 真实统计值
     * @param sensitivity 敏感度（单个记录对结果的最大影响）
     * @param epsilon 隐私预算（越小隐私保护越强）
     * @return 添加噪声后的值
     */
    public static double addLaplaceNoise(double actualValue, double sensitivity, double epsilon) {
        double scale = sensitivity / epsilon;
        double noise = generateLaplaceNoise(scale);
        return actualValue + noise;
    }
    
    /**
     * 生成拉普拉斯分布的随机噪声
     * @param scale 噪声规模
     * @return 随机噪声
     */
    private static double generateLaplaceNoise(double scale) {
        double u = RANDOM.nextDouble() - 0.5;
        return -scale * Math.signum(u) * Math.log(1 - 2 * Math.abs(u));
    }
    
    /**
     * 对年龄分布数据应用差分隐私
     * @param ageCounts 各年龄段人数统计
     * @param epsilon 隐私预算
     * @return 添加噪声后的统计数据
     */
    public static Map&lt;String, Integer&gt; protectAgeDistribution(Map&lt;String, Integer&gt; ageCounts, double epsilon) {
        Map&lt;String, Integer&gt; protectedCounts = new HashMap&lt;&gt;();
        double sensitivity = 1.0; // 一个人只能属于一个年龄段
        
        for (Map.Entry&lt;String, Integer&gt; entry : ageCounts.entrySet()) {
            double noisyValue = addLaplaceNoise(entry.getValue(), sensitivity, epsilon);
            // 确保值非负且为整数
            int protectedValue = Math.max(0, (int) Math.round(noisyValue));
            protectedCounts.put(entry.getKey(), protectedValue);
        }
        
        return protectedCounts;
    }
}</code></pre>
                    </div>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">3. 何时选择动态脱敏方案的决策依据</h3>
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-blue-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-users text-blue-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">数据访问场景多样化</h4>
                            </div>
                            <p class="text-gray-600 text-sm">当同一数据集需要被不同权限的用户访问时</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-green-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-project-diagram text-green-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">业务流程复杂</h4>
                            </div>
                            <p class="text-gray-600 text-sm">当数据在不同处理阶段需要不同程度的保护时</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-purple-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-tachometer-alt text-purple-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">数据使用频率高</h4>
                            </div>
                            <p class="text-gray-600 text-sm">需要在高性能和安全性之间找到平衡</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-red-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-gavel text-red-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">法规遵从性要求严格</h4>
                            </div>
                            <p class="text-gray-600 text-sm">需要根据不同法规动态调整脱敏策略</p>
                        </div>
                    </div>

                    <div class="bg-indigo-50 border-l-4 border-indigo-500 p-6 mt-8">
                        <div class="flex">
                            <div class="flex-shrink-0">
                                <i class="fas fa-globe-americas text-indigo-500 text-xl"></i>
                            </div>
                            <div class="ml-3">
                                <p class="text-indigo-700">
                                    在一个跨国企业的人力资源系统中，我们实施了动态脱敏方案。系统能够识别用户所在国家/地区，并根据当地隐私法规自动调整员工数据的脱敏级别，完美解决了全球化业务中的数据合规难题。
                                </p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Section Divider -->
        <div class="section-divider my-12"></div>

        <!-- Industry Applications -->
        <section id="applications" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="bg-yellow-100 p-3 rounded-full mr-4">
                    <i class="fas fa-industry text-yellow-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold text-gray-800">五、不同场景的脱敏方案选择</h2>
            </div>

            <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
                <!-- Financial -->
                <div class="card bg-white p-6 shadow-md">
                    <div class="flex items-center mb-4">
                        <div class="bg-blue-100 p-3 rounded-full mr-4">
                            <i class="fas fa-university text-blue-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold text-gray-800">金融行业的敏感数据处理方案</h3>
                    </div>
                    <p class="text-gray-600 mb-4">
                        金融行业处理的是最敏感的个人数据之一，包括账号、交易记录、信用评分等。针对这些场景，我建议采用以下脱敏方案组合：
                    </p>
                    <ul class="list-disc pl-6 text-gray-700 space-y-2 mb-4">
                        <li><b>账号信息</b>：采用格式保留加密，使数据可逆但需要密钥解锁</li>
                        <li><b>交易金额</b>：采用范围替换法，将具体金额替换为区间值</li>
                        <li><b>信用信息</b>：采用分类脱敏，保留评级但隐藏具体分数</li>
                        <li><b>行为数据</b>：采用差分隐私，在保留统计特性的前提下保护个体</li>
                    </ul>
                    <div class="bg-blue-50 p-4 rounded-lg">
                        <p class="text-blue-700 text-sm">
                            <i class="fas fa-lightbulb text-blue-500 mr-2"></i>
                            <b>案例</b>：某银行实施的交易分析系统，将所有金额按照对数函数缩放并加入随机噪声，既保护了客户隐私，又保留了交易模式分析能力，成功识别出多起欺诈交易。
                        </p>
                    </div>
                </div>

                <!-- Healthcare -->
                <div class="card bg-white p-6 shadow-md">
                    <div class="flex items-center mb-4">
                        <div class="bg-green-100 p-3 rounded-full mr-4">
                            <i class="fas fa-hospital text-green-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold text-gray-800">医疗健康数据的脱敏特殊要求</h3>
                    </div>
                    <p class="text-gray-600 mb-4">
                        医疗数据的特殊性在于既包含高度敏感的个人健康信息，又需要保留数据间的医学关联性以支持研究和治疗。
                    </p>
                    <ul class="list-disc pl-6 text-gray-700 space-y-2 mb-4">
                        <li><b>患者标识</b>：使用一致性哈希替换，保证同一患者在不同数据集中能够关联</li>
                        <li><b>病历内容</b>：使用实体识别技术识别并脱敏关键信息，保留医学术语和诊断结果</li>
                        <li><b>基因数据</b>：采用K-匿名技术，确保任何基因特征组合至少对应K个不同个体</li>
                        <li><b>医学影像</b>：对元数据进行脱敏，同时保留图像数据完整性</li>
                    </ul>
                </div>

                <!-- E-commerce -->
                <div class="card bg-white p-6 shadow-md">
                    <div class="flex items-center mb-4">
                        <div class="bg-orange-100 p-3 rounded-full mr-4">
                            <i class="fas fa-shopping-cart text-orange-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold text-gray-800">电商与用户行为数据的脱敏策略</h3>
                    </div>
                    <p class="text-gray-600 mb-4">
                        电商平台积累了大量用户行为数据，这些数据既是业务分析的基础，也包含敏感的个人偏好信息。
                    </p>
                    <ul class="list-disc pl-6 text-gray-700 space-y-2 mb-4">
                        <li><b>用户标识</b>：采用可逆令牌化技术，将用户ID替换为随机令牌</li>
                        <li><b>位置数据</b>：降低精度脱敏，将精确位置降级为区域级别</li>
                        <li><b>搜索历史</b>：关键词替换与归类，保留意图但移除具体内容</li>
                        <li><b>购买记录</b>：商品类别保留，具体商品随机化，保持消费模式特征</li>
                    </ul>
                </div>

                <!-- Government -->
                <div class="card bg-white p-6 shadow-md">
                    <div class="flex items-center mb-4">
                        <div class="bg-purple-100 p-3 rounded-full mr-4">
                            <i class="fas fa-landmark text-purple-600 text-xl"></i>
                        </div>
                        <h3 class="text-xl font-semibold text-gray-800">政府与公共部门数据脱敏的合规考量</h3>
                    </div>
                    <p class="text-gray-600 mb-4">
                        政府数据脱敏需要满足更为严格的合规要求，同时实现部门间数据共享与公众透明。
                    </p>
                    <ul class="list-disc pl-6 text-gray-700 space-y-2 mb-4">
                        <li><b>公民身份信息</b>：采用分段加密，不同部门持有不同密钥片段</li>
                        <li><b>社保税务数据</b>：采用统计摘要技术，只共享聚合结果而非原始数据</li>
                        <li><b>公共安全数据</b>：基于角色的动态脱敏，根据查询目的调整脱敏级别</li>
                        <li><b>政务公开数据</b>：差分隐私保护，确保公开数据不泄露个体隐私</li>
                    </ul>
                </div>
            </div>
        </section>

        <!-- Section Divider -->
        <div class="section-divider my-12"></div>

        <!-- Implementation -->
        <section id="implementation" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="bg-red-100 p-3 rounded-full mr-4">
                    <i class="fas fa-tools text-red-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold text-gray-800">六、脱敏技术的实施与测试</h2>
            </div>

            <div class="bg-white rounded-xl shadow-md overflow-hidden">
                <div class="p-6 md:p-8">
                    <h3 class="text-2xl font-semibold text-gray-800 mb-4">1. 数据脱敏项目的规划与流程设计</h3>
                    <p class="text-gray-700 mb-6">
                        成功的数据脱敏项目应该遵循以下步骤：
                    </p>
                    <ol class="list-decimal pl-6 text-gray-700 space-y-3 mb-6">
                        <li><b>数据分类与风险评估</b>：识别各类数据的敏感程度和泄露风险</li>
                        <li><b>脱敏策略设计</b>：针对不同数据类型选择适当的脱敏方法</li>
                        <li><b>技术方案选型</b>：评估现有工具或开发定制脱敏组件</li>
                        <li><b>实施与集成</b>：将脱敏功能整合到数据处理流程中</li>
                        <li><b>测试与验证</b>：验证脱敏效果和业务兼容性</li>
                    </ol>

                    <div class="mermaid mb-8">
                        flowchart LR
                            A[数据分类] --> B[策略设计]
                            B --> C[技术选型]
                            C --> D[实施集成]
                            D --> E[测试验证]
                    </div>

                    <div class="code-block rounded-lg overflow-hidden mb-8">
                        <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                            <div class="flex space-x-2 mr-4">
                                <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                <span class="w-3 h-3 rounded-full bg-green-500"></span>
                            </div>
                            <span class="text-gray-300 text-sm">流程设计示例</span>
                        </div>
                        <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>@Service
public class DataMaskingService {
    
    @Autowired
    private DataClassifier classifier;
    
    @Autowired
    private MaskingStrategyFactory strategyFactory;
    
    @Autowired
    private MaskingAuditLogger auditLogger;
    
    /**
     * 处理数据脱敏主流程
     * @param data 原始数据
     * @param context 脱敏上下文（用户、场景等）
     * @return 脱敏后的数据
     */
    public &lt;T&gt; T processMasking(T data, MaskingContext context) {
        // 第一步：数据分类
        DataClassification classification = classifier.classify(data);
        
        // 第二步：根据分类和上下文选择策略
        MaskingStrategy strategy = strategyFactory.getStrategy(classification, context);
        
        // 第三步：应用脱敏策略
        T maskedData = strategy.mask(data);
        
        // 第四步：记录脱敏操作（审计）
        auditLogger.logMaskingOperation(classification, context);
        
        return maskedData;
    }
}</code></pre>
                    </div>

                    <h3 class="text-2xl font-semibold text-gray-800 mb-4 mt-10">2. 如何评估脱敏效果和安全级别</h3>
                    <p class="text-gray-700 mb-6">
                        评估脱敏效果需要从以下几个维度进行：
                    </p>
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-blue-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-brain text-blue-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">信息熵测量</h4>
                            </div>
                            <p class="text-gray-600 text-sm">计算脱敏前后数据的信息熵变化</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-purple-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-user-secret text-purple-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">重识别风险分析</h4>
                            </div>
                            <p class="text-gray-600 text-sm">评估通过已知信息推断原始数据的可能性</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-green-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-check-circle text-green-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">数据实用性测试</h4>
                            </div>
                            <p class="text-gray-600 text-sm">验证脱敏后数据是否仍然满足业务需求</p>
                        </div>
                        <div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm">
                            <div class="flex items-center mb-3">
                                <div class="bg-yellow-100 p-2 rounded-full mr-3">
                                    <i class="fas fa-tachometer-alt text-yellow-600"></i>
                                </div>
                                <h4 class="font-semibold text-gray-800">性能影响评估</h4>
                            </div>
                            <p class="text-gray-600 text-sm">测量脱敏处理对系统性能的影响</p>
                        </div>
                    </div>

                    <div class="code-block rounded-lg overflow-hidden mb-6">
                        <div class="code-block-header bg-gray-800 px-4 py-3 flex items-center">
                            <div class="flex space-x-2 mr-4">
                                <span class="w-3 h-3 rounded-full bg-red-500"></span>
                                <span class="w-3 h-3 rounded-full bg-yellow-500"></span>
                                <span class="w-3 h-3 rounded-full bg-green-500"></span>
                            </div>
                            <span class="text-gray-300 text-sm">评估代码示例</span>
                        </div>
                        <pre class="bg-gray-900 text-gray-100 p-4 overflow-x-auto"><code>public class MaskingEvaluator {
    
    /**
     * 计算脱敏效果得分
     * @param originalData 原始数据
     * @param maskedData 脱敏后数据
     * @return 脱敏效果得分（0-100）
     */
    public int evaluateMaskingEffectiveness(String originalData, String maskedData) {
        // 计算保留信息率
        double retentionRate = calculateRetentionRate(originalData, maskedData);
        
        // 计算重识别风险
        double reidentificationRisk = calculateReidentificationRisk(maskedData);
        
        // 计算综合得分
        // 低重识别风险和适当的信息保留率会得到高分
        return (int)(100 * (1 - reidentificationRisk) * Math.pow(retentionRate, 0.3));
    }
    
    private double calculateRetentionRate(String originalData, String maskedData) {
        // 简化实现：计算保留原始字符的比例
        if (originalData == null || originalData.isEmpty()) {
            return 1.0;
        }
        
        int sameChars = 0;
        int length = Math.min(originalData.length(), maskedData.length());
        
        for (int i = 0; i &lt; length; i++) {
            if (originalData.charAt(i) == maskedData.charAt(i)) {
                sameChars++;
            }
        }
        
        return (double) sameChars / originalData.length();
    }
    
    private double calculateReidentificationRisk(String maskedData) {
        // 示例实现：根据掩码模式评估风险
        // 真实场景中需要更复杂的分析
        
        // 计算非掩码字符(非*字符)的比例
        long nonMaskedChars = maskedData.chars().filter(c -> c != '*').count();
        return (double) nonMaskedChars / maskedData.length();
    }
}</code></pre>
                    </div>
                </div>
            </div>
        </section>
    </div>

    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            fontFamily: '"Noto Sans SC", sans-serif',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    </script>
</body>
</html>